package com.whatech.mall.common.jwt;

import io.jsonwebtoken.SignatureAlgorithm;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * JWT属性配置。
 */
@Getter
@Setter
@ConfigurationProperties(prefix = "jwt")
public class JwtProperties {

    /**
     * secret。
     *   - SignatureAlgorithm.HS256 算法的秘钥至少256位；
     *   - SignatureAlgorithm.HS512 算法的秘钥至少512位。
     */
    private String secret = "AaBbCcDdEeFfGgHhIiJjKkLlMmNn1234567890";

    /**
     * token的有效时间(秒)，默认2周。
     */
    private Long expirationInSecond = 1209600L;

    /**
     * 签名算法，默认sha256。
     */
    private SignatureAlgorithm algorithm = SignatureAlgorithm.HS256;

    /**
     * jwt签发者
     */
    private String iss = "Denvie";

    /**
     * jwt所面向的用户
     */
    private String sub = "ApiGateway";

    /**
     * 接收jwt的一方
     */
    private String aud = "MicroService";

    /**
     * 是否启用微服务间通信JWT校验
     */
    private boolean msJwtEnabled = true;

    /**
     * 微服务间通信的jwtHeader
     */
    private String msJwtHeader = null;

}
